package cn.edu.scnu.semart.goods.service;

import cn.edu.scnu.semart.model.goods.Favorite;
import cn.edu.scnu.semart.model.goods.Goods;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 用户收藏Service接口
 */
public interface FavoriteService extends IService<Favorite> {

    /**
     * 添加收藏
     * @param userId 用户ID
     * @param goodsId 商品ID
     * @return 是否成功
     */
    boolean addFavorite(Integer userId, Integer goodsId);

    /**
     * 取消收藏
     * @param userId 用户ID
     * @param goodsId 商品ID
     * @return 是否成功
     */
    boolean removeFavorite(Integer userId, Integer goodsId);

    /**
     * 检查是否已收藏
     * @param userId 用户ID
     * @param goodsId 商品ID
     * @return 是否已收藏
     */
    boolean isFavorite(Integer userId, Integer goodsId);

    /**
     * 获取用户收藏的商品列表（包含商品详情）
     * @param userId 用户ID
     * @param page 分页参数
     * @return 包含商品详情的分页列表
     */
    IPage<Goods> getUserFavorites(Integer userId, Page<Goods> page);

    /**
     * 获取用户收藏数量
     * @param userId 用户ID
     * @return 收藏数量
     */
    Integer getUserFavoriteCount(Integer userId);
} 